/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package aqu.controlador.CuentasPorPagar;

import aqu.bean.generico.BeanGenerico;
import aqu.persistencia.Dao.CuentasPorPagar.CxpRetencionManager;
import aqu.persistencia.Dao.CuentasPorPagar.CxpTipoRetencionManager;
import aqu.persistencia.entity.CxpRetencion;
import aqu.persistencia.entity.CxpTipoRetencion;
import aqu.persistencia.utilidad.MessagesController;
import com.icesoft.faces.component.ext.RowSelectorEvent;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;

/**
 *
 * @author Verito Ramirez
 *         Victor Jaramillo
 */
@ManagedBean(name = "retencionController")
@ViewScoped
public class RetencionController extends BeanGenerico {

    private CxpRetencion retencion;
    private List<CxpRetencion> lista;
    private CxpTipoRetencion tipoRetencion;
    private List<CxpTipoRetencion> listaTipoRetenciones;
    private CxpRetencionManager cxpRetencionManager = new CxpRetencionManager();
    private CxpTipoRetencionManager cxpTipoRetencionManager = new CxpTipoRetencionManager();
    private boolean panelvisible;

    public void switchTipRet (CxpRetencion retencion){        
        tipoRetencion = retencion.getCxpCodigoTipRet();
        //tipoRetencion.setCxpCodigoTipRet(retencion.getCxpCodigoTipRet());
    }
    public RetencionController() {

        retencion = new CxpRetencion();
        lista = cxpRetencionManager.getList();
        tipoRetencion = new CxpTipoRetencion();
        listaTipoRetenciones = cxpTipoRetencionManager.getList();
    }

    public CxpRetencionManager getCxpRetencionManager() {
        return cxpRetencionManager;
    }

    public void setCxpRetencionManager(CxpRetencionManager cxpRetencionManager) {
        this.cxpRetencionManager = cxpRetencionManager;
    }

    public CxpTipoRetencionManager getCxpTipoRetencionManager() {
        return cxpTipoRetencionManager;
    }

    public void setCxpTipoRetencionManager(CxpTipoRetencionManager cxpTipoRetencionManager) {
        this.cxpTipoRetencionManager = cxpTipoRetencionManager;
    }

    public List<CxpRetencion> getLista() {
        lista = cxpRetencionManager.getList();
        return lista;
    }

    public void setLista(List<CxpRetencion> lista) {
        this.lista = lista;
    }

    public List<CxpTipoRetencion> getListaTipoRetenciones() {
        listaTipoRetenciones = cxpTipoRetencionManager.getList();
        return listaTipoRetenciones;
    }

    public void setListaTipoRetenciones(List<CxpTipoRetencion> listaTipoRetenciones) {
        this.listaTipoRetenciones = listaTipoRetenciones;
    }

    public CxpRetencion getRetencion() {
        return retencion;
    }

    public void setRetencion(CxpRetencion retencion) {
        this.retencion = retencion;
    }

    public CxpTipoRetencion getTipoRetencion() {
        return tipoRetencion;
    }

    public void setTipoRetencion(CxpTipoRetencion tipoRetencion) {
        this.tipoRetencion = tipoRetencion;
    }

    
    public boolean isPanelvisible() {
        return panelvisible;
    }

    public void setPanelvisible(boolean panelvisible) {
        this.panelvisible = panelvisible;
    }

    public void llamarPanelvisible(ActionEvent event) {
        panelvisible = !panelvisible;
    }

    public void nuevo(ActionEvent actionEvent) {
        retencion = new CxpRetencion();
    }

    public String eliminar() {
        try {
            CxpRetencion retencionTemp = (CxpRetencion) (retencion);
            if (cxpRetencionManager.delete(retencionTemp) == false) {
                llamarPanelvisible(null);
            }
        } catch (Exception e) {
            MessagesController.addInfo("Mensaje de error :", e.getMessage());
            llamarPanelvisible(null);
        }
        return "index";
    }

    public void insertar(ActionEvent actionEvent) {
        try {
            retencion.setCxpCodigoRet(MessagesController.obtenerkeyautomaticosinceros("cxp_retencion", "CXP_CODIGO_RET"));
            //retencion.setCxpCodigoTipRet(tipoRetencion.getCxpCodigoTipRet());
            retencion.setCxpCodigoTipRet(tipoRetencion);
            if (cxpRetencionManager.create(retencion) == false) {
                llamarPanelvisible(null);
            }
            retencion = new CxpRetencion();
        } catch (Exception e) {
            MessagesController.addInfo("Mensaje de error :", e.getMessage());
            llamarPanelvisible(null);
        }
    }

    public void modificar(ActionEvent actionEvent) {
        try {
            if (cxpRetencionManager.update(retencion) == false) {
                llamarPanelvisible(null);
            }
        } catch (Exception e) {
            MessagesController.addInfo("Mensaje de error :", e.getMessage());
            llamarPanelvisible(null);
        }
    }

    public void rowSelectionListener(RowSelectorEvent event) {
        retencion = lista.get(event.getRow());
        switchTipRet(retencion);
    }   
    
}